{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# parser for reading data in .tfrecord format.\n",
    "def parser(serialized_example):\n",
    "    feature_set = {'image': tf.FixedLenFeature([], tf.string),\n",
    "                   'label': tf.FixedLenFeature([], tf.int64)}\n",
    "    features = tf.parse_single_example(serialized_example, features= feature_set)\n",
    "    image = tf.decode_raw(features['image'], tf.uint8)\n",
    "    HEIGHT = 32\n",
    "    WIDTH = 32\n",
    "    DEPTH = 3\n",
    "    image.set_shape([DEPTH * HEIGHT * WIDTH])\n",
    "    image = tf.cast(tf.transpose(tf.reshape(image, [DEPTH, HEIGHT, WIDTH]), [1, 2, 0]), tf.uint8)\n",
    "    label = tf.cast(features['label'], tf.int32)\n",
    "    return image, label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-3-21efed455b41>:8: start_queue_runners (from tensorflow.python.training.queue_runner_impl) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "To construct input pipelines, use the `tf.data` module.\n",
      "WARNING:tensorflow:`tf.train.start_queue_runners()` was called when no queue runners were defined. You can safely remove the call to this deprecated function.\n"
     ]
    }
   ],
   "source": [
    "# get labels for all training data.\n",
    "filenames = \"./data/cifar-10-data-im-0.02/train.tfrecords\"\n",
    "labels = []\n",
    "batch_size = 1\n",
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    coord = tf.train.Coordinator()\n",
    "    threads = tf.train.start_queue_runners(sess=sess, coord=coord)\n",
    "    \n",
    "    files = tf.data.Dataset.list_files(filenames)\n",
    "    dataset = files.interleave(tf.data.TFRecordDataset, cycle_length=1)\n",
    "    dataset = dataset.map(map_func=parser)\n",
    "    dataset = dataset.batch(batch_size=batch_size)\n",
    "    \n",
    "    iterator = dataset.make_one_shot_iterator()\n",
    "    image_batch, label_batch = iterator.get_next()\n",
    "\n",
    "    while True:\n",
    "#         print(sess.run([image_batch])[0].shape)\n",
    "#         print(sess.run([label_batch])[0].shape)\n",
    "#         plt.figure()\n",
    "#         plt.imshow(np.array(sess.run([image_batch])[0])[0])\n",
    "        try:\n",
    "            labels.append(sess.run([label_batch])[0][0])\n",
    "        except:\n",
    "            break\n",
    "    coord.request_stop()\n",
    "    \n",
    "    coord.join(threads)\n",
    "    sess.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[5000 3237 2096 1357  878  568  368  238  154  100]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f60fc4e39b0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAEgCAYAAADCPMtRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4VMUWwH+TRhqh9w4JLYVQEnoXEJWOoqICihW7oGDF\n+uyo2LE9xYKiWJ6ogIIQpPcISCghdBIgQHrZ8/6Yu5vNprCBhASc3/fdb/fOnZk7c+u5Z86co0QE\ng8FgMBgM/y48yrsBBoPBYDAYzj9GADAYDAaD4V+IEQAMBoPBYPgXYgQAg8FgMBj+hRgBwGAwGAyG\nfyFGADAYDAaD4V+IEQDKAaXUeKWUKKWCy7stZ0IpFWy19UzLohLWm6SUetNp/U6rnpql1O4rrPo6\nuZl/uFLqF6td2UqpQ0qp75RSlxfSxrpOaXOLOB4ZReznG2v7E0Vsv9elnkyl1A6l1ONKKW83+9JJ\nKfWBUmqj1ZfkYvLWVkrNVkqdUEqlKKV+VkqFuLMfq3w/pdRJpVR1p7SNSqn/uVuHG/t4TSmVUor1\n2Y9x1dKq83yjlEou4rortePutK+2Sqnpztf9hYJSarK7zyulVIh1/adY98NspVRtlzwTlVI73b0X\nKzpe5d0AQ4VnH9DVad0TiAE+BD5wSj9ZwnoHAcfOrWmlg1LqPeBm4CvgNuAoUA8YDvyolGopIruK\nqWIvcLVLmq2Q/VQDhlir1wNPFlPnpehjWgW4xsrrDTx2pv4A3YFLgLVADlCooGk9xBYAgej+ZwCP\nA0uUUhEiUuz5UUop4CVgpogcd6NdhtJlLvCKS9qJMthPW+AJ4HvgcBnUfz4YADgLkfmeV0qpGsAS\nYD8wBvAHngcWKKU6iUiOlfW/wKPo58TMMm5zmWMEAEOxiEgmsNK+rpSyXzP7RWRl4aXcqnfdubat\nNFBK3QbcAtwmIu+5bJ6jlJpJ/gdHYWS4eSyuBioB84HLlFI9RCSmiLzrRCTJ+v+bUqot+iXtjgAw\nU0ReB7C0LEVpmq4F2gEdRGSDlX8NsAe4By0MFEc/oD1aUDKcf46cyz1YniilKlnPlvPFWhEpUhMG\n3AtUA9qLyFEApdQuYB36PvkUQESylVIfAfcrpd4SkQKC/oWEGQKowCilrlNKbVJKZViq6c+UUvVc\n8sRbqqqrlVLblFKpSqm1SqkehdR3r5U/Qym1WinVzVr/pBTbPEQp9ZtS6rDVli1KqUlKKQ+XfPmG\nAIqoSyml7lJKxVptPqqUekcpFeSSr56lik9RSh1XSn2A/qp1h2nAqkJe/gCIyF8icsTNus7EOLRG\n5WYg11p3lw1AHaWUz5kyluChNBTYan/5W2WPAAuBYW6UnwgsE5F9xWVSSkVaatfrLHV+olLqlFLq\nfaWUj1IqTCn1h3W9/KOUGlVEPe2VUsuVUulKqX1Kqaku24OUUm863QcHlFLfKqWan6kjSqkblVLL\nrOvylFJqjVLqSpc8Va1+TFFKTbPacEoptUAp1aKQOsda91ma0sMkfymlLnHaXkkp9aSlUs606nvG\nScg+J5RSI5VSC5VSR6zjsUkpdYuluXHO56GUus+6VzOUUsescu2UUqOBb6ysG1SeCj3MKuuvlHpV\nKbVfKZVl9WWa8/2u9JCUWMfjLaXUESC1NPpYigwFFtpf/gAish7YSsF74SugKVrLdkFjBIAKilLq\nFuAzYBswEpiKVpv/qZRyfbn1BB5Afx2OQavp/6ecxjiVUhOBGcAi9AX9CfAFUNrjoM2BX4DxaHX3\nF8DLwMNnUddMtIrzJ6uuR4BRwA/2h5j1+z/01+hkYCxafffSmSpXSrUEGgM/nkXbXOvycllcH7Kt\ngM7A5yJyEK16v1Ip5evmLpqitS5Z59pWJ0KB2ELS/wZau/bBGWvbQGBZCfb3LFoDMhb4D1qAeBP4\nGpgDjADigS+VUo1dynoD84Dv0NfvT8B/lFL3OuWpjH6mPQ5chv6qqw38pZSqcoa2NQNmo4dbRqPV\nwXOUUq5DOwCT0OfyNmsJA+Y6Hy+l1KNWfXHoL8gx6PuiibVdWf25D5hltfd1a71QYbQQlOt1V0if\nfgRuQL/g5qLvqQdc8n2Evkf/QD9rJqAFzgZWmv3evQE9HNgVsA+JzQPuQJ/HK6z1Z4HXCmnvi0AQ\n+tkw5gwdc72fCls8i6vDhe1KqVxLyJrh/Ay1hJU2FH0vtHVOEJEdwBH0MN2FjYiY5Twv6BtAgOAi\ntnuiL7DFLuk9rHJ3O6XFo8f9qjmldbLyXWute6C/POe71DfSyvdJCdruZZWZ7kZeZeX/D3DAZVsS\n8KbT+p1WvTWt9bbW+v0u5QZZ6ZdY6yOs9Stc8i2z0jsV077+Vp6xbvbd3sa6TmlzrTTXZapL2ees\n9DbW+hhr/WqXfPda6XWsY1cDuAutMbj+LK61N4HkIrYdBd4tJH2y1YbKxdTbyspzZSHbNgL/c1qP\n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\nSJIkSZIm5ENp3C9mZhLxIAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f615a83fcc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cls_num = 10\n",
    "img_max = 5000\n",
    "imb_factor = 0.02\n",
    "\n",
    "img_num_per_cls = np.bincount(labels, minlength=10)\n",
    "print(img_num_per_cls)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8,4))\n",
    "plt.plot(img_num_per_cls, linewidth=2, label='number of samples')\n",
    "for b in [0.9999, 0.999, 0.99, 0.9]:\n",
    "    plt.plot((1.0 - np.power(b, img_num_per_cls)) / (1 - b), '--', linewidth=2, label='effective number of samples (%s)'%str(b))\n",
    "\n",
    "plt.yscale('log')\n",
    "ax.set_xticks(range(10))\n",
    "ax.set_xticklabels(range(10))\n",
    "plt.tick_params(axis='both', which='major', labelsize=12)\n",
    "plt.tick_params(axis='both', which='minor', labelsize=12)\n",
    "plt.gca().grid(which='both', linestyle=':', linewidth='0.5', color='#a8a495')\n",
    "plt.gca().xaxis.grid(False)\n",
    "ax.set_xlim([0, 9])\n",
    "ax.set_ylim([9, 10000])\n",
    "leg = plt.legend(loc=0, borderaxespad=0.1, ncol=1, prop={'size':10}, edgecolor='k', framealpha=1.0)\n",
    "ax.set_xlabel('CIFAR-10 class index', fontsize=16)\n",
    "ax.set_ylabel('Effective number of samples', fontsize=16)\n",
    "plt.title('Long-Tailed CIFAR-10 (Imbalance Factor = 50)', fontsize=16)\n",
    "# plt.savefig('/home/yincui/Dropbox/balancedloss/cifar10_effec_num.pdf', transparent=True, bbox_inches='tight', pad_inches=0.05)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
